'use strict';
var vk = uniCloud.vk; // 全局vk实例
// 涉及的表名
const dbName = {
	BookJournal: "book_journal", // 流水账
	BookList: "book_list", // 账本列表
};

var db = uniCloud.database(); // 全局数据库引用
var _ = db.command; // 数据库操作符
var $ = _.aggregate; // 聚合查询操作符
/**
 * 权限注意：访问以下链接查看
 * 文档地址：https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html#内置权限
 */
var cloudObject = {
	isCloudObject: true, // 标记为云对象模式
	/**
	 * 请求前处理，主要用于调用方法之前进行预处理，一般用于拦截器、统一的身份验证、参数校验、定义全局对象等。
	 * 文档地址：https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html#before-预处理
	 */
	_before: async function() {
		vk = uniCloud.vk; // 将vk定义为全局对象
		// let { customUtil, uniID, config, pubFun } = this.getUtil(); // 获取工具包
	},
	/**
	 * 请求后处理，主要用于处理本次调用方法的返回结果或者抛出的错误
	 * 文档地址：https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html#after-后处理
	 */
	_after: async function(options) {
		let {
			err,
			res
		} = options;
		if (err) {
			return; // 如果方法抛出错误，直接return;不处理
		}
		return res;
	},
	/**
	 * 添加流水账
	 * @url client/book/book.UserJournalAdd 前端调用的url参数地址
	 */
	UserJournalAdd: async function(data) {
		let res = {
			code: 0,
			msg: ''
		};
		let {
			uid
		} = this.getClientInfo(); // 获取客户端信息
		// 业务逻辑开始-----------------------------------------------------------


		data.isdel = 0
		data.create_time = Date.now()

		if (data._id == "") {
			delete(data._id)
			res.id = await vk.baseDao.add({
				dbName: dbName.BookJournal, // 表名
				dataJson: data
			});
		} else {
			const id = data._id
			delete(data._id)
			res.id = await vk.baseDao.updateById({
				id,
				dbName: dbName.BookJournal, // 表名
				dataJson: data
			});
		}



		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},

	/**
	 * 流水账列表
	 * @url client/book/book.UseJournalList 前端调用的url参数地址
	 */
	UserJournalList: async function(data) {
		let res = {
			code: 0,
			msg: ''
		};
		let {
			uid
		} = this.getClientInfo(); // 获取客户端信息
		// 业务逻辑开始-----------------------------------------------------------


		if (!data.bookid || data.bookid == "") {
			return res;
		}

		const swhere = {
			dbName: dbName.BookJournal, // 表名
			pageIndex: data.page, // 当前第几页
			pageSize: data.pageSize, // 每页条数
			whereJson: {
				isdel: 0,
				bookid: data.bookid,
				year: data.year,
				month: data.month
			},
			sortArr: [{
				name: "datetime",
				type: "desc"
			}],
		}

		res.data = await vk.baseDao.select(swhere);

		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
	/**
	 * 删除流水
	 * @url client/book/book.UserJournalDelete 前端调用的url参数地址
	 */
	UserJournalDelete: async function(data) {
		let res = {
			code: 0,
			msg: ''
		};
		let {
			uid
		} = this.getClientInfo(); // 获取客户端信息
		// 业务逻辑开始-----------------------------------------------------------


		if (!data._id || data._id == "") {
			return res;
		}


		res.data = await vk.baseDao.deleteById({
			dbName: dbName.BookJournal,
			id: data._id
		});

		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
	/**
	 * 添加账本
	 * @url client/book/book.BookAdd 前端调用的url参数地址
	 */
	BookAdd: async function(data) {
		let res = {
			code: 0,
			msg: ''
		};
		let {
			uid
		} = this.getClientInfo(); // 获取客户端信息
		// 业务逻辑开始-----------------------------------------------------------


		data.isdel = 0
		data.create_time = Date.now()

		res.id = await vk.baseDao.add({
			dbName: dbName.BookList, // 表名
			dataJson: data
		});

		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},

};

module.exports = cloudObject;